In software design environments, measurements of productivity and quality are useful for balancing workload, creating predictable schedules and budgets, and controlling quality of work. Metrics used for measuring productivity and quality with traditional software development processes include Lines of Code (LOC) and defect densities (defects/LOC) for each unit of work. However, in model-based design environments, these traditional measurements may not accurately reflect productivity of a developer and the quality of the work performed by the developer.
Many model-based designs employ graphical modeling tools where code is automatically generated for execution from a model. In other words, an engineer can produce remarkably more LOC per unit time than it is possible with hand coding and with virtually no software coding defects. Therefore, with the traditional measurements of productivity and quality, not only is it impossible to tell how much effort an engineer has put into a project using a model-based design based on the LOC measure, but also it is difficult to tell if the developer is producing quality work.
Currently, there is software that a user may manually activate after a model is built to count the number of different blocks that are included in the model. However, it is inconvenient that the user needs to manually activate such a function. Additionally, a mere count of different blocks is not a good measure of effort and productivity since some blocks are easier to employ than some others especially in combination with each other.
Therefore, there is a need for a method that can automatically gather data that is useful for evaluating effort and productivity.